home *** CD-ROM | disk | FTP | other *** search
- /* FindSpeller.c
- * Look for and launch an application with the given creator code.
- * Copyright ©1996 Michael D. Crawford. All Rights Reserved.
- * You may use this code on the condition that you read the following web page:
- * http://www.webcom.com/wordserv/
- * 1 Jul 96 Mike Crawford crawford@scruznet.com
- */
-
- #include "FindSpeller.h"
- #include "FindProcess.h"
- #include "SearchForApp.h"
-
- OSErr FindSpeller( OSType creator, Boolean *foundIt )
- {
- OSErr err;
- short i;
- Boolean gotIt;
- ProcessSerialNumber psn;
- ProcessInfoRec pInfo;
- FSSpec fSpec;
- Str255 procName;
- VolumeParam vPB;
- OSType *ptr;
- OSType **fakeHandle;
- OSType buf;
-
- *foundIt = false;
-
- gotIt = FindAProcess( creator,
- &psn,
- &pInfo,
- &fSpec,
- procName );
- if ( gotIt ){
- *foundIt = true;
- return noErr;
- }
-
- vPB.ioCompletion = (IOCompletionUPP)NULL;
- vPB.ioVolIndex = 1;
- vPB.ioNamePtr = (StringPtr)NULL;
-
- ptr = &creator;
- fakeHandle = &ptr;
-
- do {
- err = PBGetVInfoSync( (ParamBlockRec*)&vPB );
- if ( err == nsvErr )
- return noErr; // Out of volumes to search, haven't found any browsers
- if ( err )
- return err;
-
- err = SearchVolForBrowser( vPB.ioVRefNum,
- &gotIt,
- fakeHandle,
- 1,
- &fSpec,
- &buf );
- if ( gotIt ){
- err = LaunchTheApp( &fSpec );
-
- if ( !err )
- *foundIt = true;
- return err;
-
- }
-
- vPB.ioVolIndex++;
- }while( !err && !gotIt );
-
- return noErr;
- }
-
-